var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var session = require('express-session')
var logger = require('morgan');
var bodyParser = require('body-parser')
var indexRouter = require('./routes/index')
var goodsRouter = require('./routes/goods')
var usersRouter = require('./routes/users')

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
//配置cookie
app.use(cookieParser());
//配置session
app.use(session({
  secret: '12345',
  name: 'mySession',
  resave: false,
  saveUninitialized: true,
  cookie: {
    maxAge: 60*1000*60
  },
  rolling: true
}))
app.use(express.static(path.join(__dirname, 'public')));

//配置body-parser中间件
//parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({
  extended: false
}))
//parse application/json
app.use(bodyParser.json())

app.use(function (req,res,next) {
  console.log(`path:${req.path}`)
  if (req.cookies.userId) {
    next()
  }else {
    if (req.path == "/api/users/login" || req.path == "/api/goods" || req.path == "/api/users/checkLogin") {
      next()
    }else {
      res.json({
        status: '10001',
        msg: '当前未登录',
        result: ''
      })
    }
  }
})

app.use('/api', indexRouter);
app.use('/api/goods', goodsRouter);
app.use('/api/users', usersRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;
